#include "CTaskList.h"


namespace irr {
namespace thread {

CTaskList::CTaskList() {
}

CTaskList::~CTaskList() {
	tasks.clear();
}

void CTaskList::addTask(ITask*task){
	if (!task)
		return;
	task->grab();
	tasks.push_back(task);
}

void CTaskList::giveTask(ITask*task){
	addTask(task);
	if (task)
		task->drop();
}

void CTaskList::run(){
	for (irr::u32 i=0;i<tasks.size();i++){
		tasks[i]->run();
		tasks[i]->drop();
	}
	tasks.clear();
}

irr::u32 CTaskList::getTaskCount(){
	return tasks.size();
}
extern "C" IRRLICHT_API ITaskList* IRRCALLCONV createTaskList(){
	return new CTaskList();
}
} /* namespace thread */
} /* namespace irr */
